Field of the Invention
The present invention is generally directed to managing communications on a computer network. More specifically, the present invention makes a series of calculations when making adjustments that affect amounts of network bandwidth allocated to flows of data over the computer network.
Description of the Related Art
Computer networks today use various mechanisms to control how overall amounts of available bandwidth available on a computer network are allocated to different communications transmitted over the computer network.
In certain instances a portion of a total available bandwidth may be allocated to different clients or processes based on a classification or priority. For example, in the instance when a dial up link bandwidth may provide data through put rates of up to 10 megabits per second (Mbps) and both a first and a second user wish to consume all of or a significant portion of that available bandwidth, administration policies that allocate bandwidth to those users may identify that network traffic associated with the first user is classified as having a high priority and that network traffic associated with the second user is classified as having a low priority. In such an instance, network traffic associated with the first user will usually be allocated more bandwidth then network traffic associated with the second user. The total bandwidth allocated to the first user and the second user may be less than the total available network bandwidth of 10 Mbps, where processes associated with first user may be allocated a bandwidth of 5 Mbps and processes allocated with the second user may be allocated a bandwidth of 1 Mbps. After the process associated with the first and the second user are allocated an initial amount of bandwidth, those processes may compete for any additional amount of bandwidth that may be provided by the computer network. As such, bandwidth allocated to processes associated with the first user may end up with an allocation of 8 Mbps and processes associated with the second user may end up with an allocation of 2 Mbps. Such class based network bandwidth management methodologies while being somewhat effective, the may not allocate optimal amounts of bandwidth to processes over time. For example, a higher priority process may be allocated higher amounts of network bandwidth even in instances when an amount of data associated with the higher priority process fluctuates over time.
A first type of mechanism that has been used to manage network bandwidth is queuing. When queuing is used, a receiver may queue received packets as more packets from different processes are received at a computer network. These packets may be queued until the computer network has bandwidth available for those packets to be transmitted over the network. One significant limitation of queuing received packets relates to memory, the more packets queued at a computer network, a larger amount of memory must be allocated to storing received packets by the network. Since the utilization of more memory increases costs associated with operating a computer network, managing bandwidth by increasing queue size increases costs associated with running and maintaining a computer network.
A second type of mechanism that has been proposed to manage network bandwidth uses the transfer control protocol (TCP). Such methods implemented on TCP use an advertised window that is sent to a client in an acknowledge message packet. The advertised window provides a measure of window size to a client that corresponds to an amount of data that a client sends to a target network in a packet. In such implementations, a client or sender of packets may periodically receive an acknowledge message that includes an advertised widow where the size of the window may vary over time. Such methods may reduce the size of an advertised window when an input traffic rate exceeds a target rate, thus slowing a net amount of data sent by the client to a target network per unit time. Such methods, however, provide limited benefits to a client or an administrator of a computer network. This is because processes that may be more important to a client or an administrator are treated with the same priority as processes that are less important to the client or the administrator.
In yet another approach, a computer network may simply drop packets when large numbers of packets are sent to the computer network. Dropping packets, however, may cause clients to increase a number of packets sent to a computer network because the clients may re-send packets the dropped packets to the computer network at a later time, causing more packets to be dropped. As such, bandwidth management techniques that drop packets are relatively crude and may be ineffective.
What is needed are queue-less data management methods and systems that intelligently manage available network bandwidth over time according to preferences or priorities that benefit clients and administrators.